问题描述:
故障背景:
- vcenter管理平台中的其中一台exsi主机的web页面打不开(exsi6.5) https://192.168.99.25
- exsi主机内有正在运行的虚拟机
机器清单:
| 机器名 | ip | 机器类型 |
|---|---|---|
| 管理机 | 192.168.99.225 | vcenter管理机(vsphere client) |
| exsi主机 | 192.168.99.25 | exsi服务器(内有正在运行的虚拟机) |
排查流程:
排查vSphere/vCenter配置问题(针对禁止直连,15-20分钟)
- 检查并禁用直连限制:
- 在vCenter > 主机 > “Configure” (配置)> “Security Profile”(安全配置文件) > “Lockdown Mode”(锁定模式)确认已禁用。

- vSphere/vCenter配置禁止直连访问:在vCenter中,可能启用了“锁定ESXi主机”或“禁用直连vSphere Client”策略(ESXi 7.0+有此选项),或vCenter的Enhanced vMotion Compatibility(EVC)模式/集群设置限制了直连。vSphere Client通过vCenter连接成功,但直连被禁用。
- 如图:EVC模式禁用,说明没有限制直连

一、给服务器插上键盘显示器,看到exsi系统首页,输入root密码
- 按F2,进入配置页面
- 进入“系统自定义” > “故障排除选项”(Troubleshooting Options)
- 使用方向键选择“Troubleshooting Options”,按 Enter 。
- 启用 ESXi Shell
- 选择“Enable ESXi Shell”,按 Enter ,当右侧显示“ESXi Shell is Enabled”即可。
- (可选)同时建议启用 SSH
- 在同一菜单下选择“Enable SSH”,按 Enter ,右侧显示“SSH is Enabled”。
二、进入命令行界面
- 回到控制台主界面,按 Alt + F1 组合键
- 屏幕会变黑并出现登录提示。
- 输入你的管理员用户名(通常是 root )和密码,即可进入命令行。
- ⚠️ 注意:如果未通过上述步骤启用 ESXi Shell,按 Alt + F1 只会出现一个闪烁光标,无法登录。
- 操作完成后返回图形界面
- 在命令行页面,按 Alt + F2 可以切回原来的图形化界面。
三、ESXi Shell界面操作:
ESXi 6.5 使用的是 Host Client 而不是 vSphere Client,所以不必检查vSphere Client ui服务是否存在,现在telnet连接22,443端口都没反应,先看一下是不是两张网卡导致的网络问题

1. 检查正确的服务状态
在 ESXi 6.5 中,Web 界面由不同的服务管理:
# 检查 ESXi 6.5 的 Web 服务状态
/etc/init.d/hostd status
/etc/init.d/vpxa status
# 检查反向代理服务(关键!)
/etc/init.d/rhttpproxy status
2. 重启 ESXi 6.5 特定的 Web 服务
# 停止服务
/etc/init.d/rhttpproxy stop
/etc/init.d/hostd stop
# 等待几秒
sleep 10
# 重新启动服务
/etc/init.d/hostd start
/etc/init.d/rhttpproxy start
3. 检查端口监听情况
由于 netstat 不可用,使用 ESXi 的命令:
# 检查端口监听
esxcli network ip connection list | grep -E "(443|902|80)"
# 或者使用
net-stats -l


4. 检查 vmk1 (192.168.99.248) 的影响
这个额外的 vmkernel 端口可能是问题的根源:
# 查看所有 vmkernel 端口的详细信息
esxcli network ip interface list
# 检查默认网关和路由
esxcli network ip route ipv4 list
# 查看所有vmkernel接口(IP、子网、网关)
esxcli network ip interface ipv4 get -i vmk0
esxcli network ip interface ipv4 get -i vmk1


可能的问题:如果 vmk1 配置了网关,可能导致管理流量的路由混乱。
从以上的排查步骤可以得出结论:
- ✅ rhttpproxy 和 hostd 服务已成功重启
- ✅ 80 和 443 端口都在 LISTEN 状态
- ✅ 路由配置有问题!

路由配置冲突:
路由表显示:
default,0.0.0.0,192.168.99.1,vmk0,manual
192.168.0.0,255.255.0.0,0.0.0.0,vmk1,manual
192.168.99.0,255.255.255.0,0.0.0.0,vmk0,manual
问题在于:vmk1 配置了一条 192.168.0.0/16 的路由,这可能会干扰到管理网络的路由。
临时禁用 vmk1 测试

# 临时禁用 vmk1
esxcli network ip interface set -e false -i vmk1
# 测试 Web 访问是否恢复
# 如果恢复,说明 vmk1 配置有问题
# 重新启用(如果需要)
esxcli network ip interface set -e true -i vmk1
成功访问,问题解决

测试web页面成功访问,定位问题源于vmk1的路由条目192.168.0.0/255.255.0.0 via 0.0.0.0 on vmk1(这是一个本地/无网关的广域路由,覆盖了192.168.0.0到192.168.255.255的整个范围)。虽然管理IP(vmk0: 192.168.99.25)在192.168.99.0/24子网内,但这个vmk1路由可能导致:
- 路由优先级冲突:ESXi在处理管理流量(e.g., HTTPS 443端口)时,如果流量被误判为匹配vmk1的广域路由,会绕过vmk0的默认路由(192.168.99.1),造成web服务(rhttpproxy/hostd)响应异常或丢包。
- 为什么临时禁用vmk1有效:它切断了这个干扰路由,但不是永久方案,重启后会恢复。
后续步骤(永久生效):
已知vmk1这块网卡只用于虚拟机迁移用,我们现在用不到这块网卡,故决定从机器中删除
在vcenter中移除有问题的vmk1:如图

检查:
# 查看完整路由表
esxcli network ip route ipv4 list
#没有出现vmk1
#测试是否将vmk1清理干净:
esxcli network network ip interface set -e true -i vmk1
#显示没有vmk1,即使重启服务器也不会重复出现此次问题

其他排查命令:
检查 ESXi 主机配置文件
# 查看管理网络配置
esxcli network ip interface ipv4 get -i vmk0
# 检查 DNS 配置
esxcli network ip dns server list
查看 Web 服务相关日志
# 查看最近的系统日志
tail -20 /var/log/messages
# 查看 hostd 日志中与 Web 相关的错误
grep -i error /var/log/hostd.log | tail -10
grep -i "443\|http" /var/log/hostd.log | tail -10
验证 SSL 证书状态
ESXi 6.5 有时会有 SSL 证书问题:
# 检查证书状态
/etc/init.d/hostd status | grep -i ssl